//
//  RestConsumer.h
//  FinApp
//
//  Created by Victor L. Fernandez Rodrigo on 06/10/11.
//  Copyright 2011 __MyCompanyName__. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "Defines.h"

@protocol DataFetchingHandler

@required

-(void)dataFetchingDidFailWithTag:(NSString*)tag andError:(NSError*)error;
-(void)dataFetchingCompleteWithTag:(NSString*)tag data:(id)aData andStatus:(NSInteger)status;

@end

#define kNEARMETAG @"nearMeTag"
#define kSEARCHHOUSESTAG @"searchHousesTag"
#define kDETAILTAG      @"detailTag"
#define kTRACKINGTAG    @"tracking"

@interface RestConsumer : NSObject {
    
}

/*Servei de localització de inmobles propers:
 * s'envien la localització del usuari i el servidor
 * respon els inmobles propers en la distancia marcada pel servei.
 * El servei es pot paginar si es necesari, marcant la pàgina i el número d'inmobles
 * que es tornen per página
 */

- (void)getHousesNearLatitude:(float)latitude 
                 andLongitude:(float)longitude 
                   withRadius:(NSInteger)radius 
                         page:(NSInteger)page
             andNumberPerPage:(NSInteger)numPerPage 
                 withDelegate:(id<DataFetchingHandler>)delegate;

/*Servei de cerca de resultats d'inmobles segons uns filtres:
 * Tipus de cerca: Compra/Lloguer
 * Tipus d'inmoble: casa/pis/terreny...
 * Provincia, poblacio,...
 */

- (void)searchHousesWithFiltersType:(float)searchType 
                            inmoble:(NSString *)inmoble
                          provincia:(NSString *)provincia 
                           poblacio:(NSString *)poblacio
                           segonaMa:(BOOL)segonaMa 
                          aEstrenar:(BOOL)aEstrenar
                    nomesVacacional:(BOOL)nomesVacacional
                   withDelegate:(id<DataFetchingHandler>)delegate;

/* Servei de detall:
 * Retorna tota la informació necesaria d'un pis donat
 * el seu identificador
 */

- (void)getDetailOfProductWithID:(NSInteger)pisID withDelegate:(id<DataFetchingHandler>)delegate;

/* Servei de tracking:
 * Fa un cache donada una localitzacio de tots el pisos
 * del voltant amb el mínim de dades
 */
- (void)getTrackingNearLatitude:(float)latitude 
                 andLongitude:(float)longitude 
                   withRadius:(NSInteger)radius 
                 withDelegate:(id<DataFetchingHandler>)delegate;
 
+ (RestConsumer *)sharedInstance;

@end
